package com.ctshk.rpc.order.hotel.dto.h5;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @description 订单基本信息
 * @author 谢诗宏
 * @date 2021/4/20
 */
@Data
@ApiModel(description="酒店详情dto")
public class HotelOrderInfoDTO implements Serializable {

    private static final long serialVersionUID = -1706256049314305407L;

    @ApiModelProperty(value = "订单id")
    private Long id;

    @ApiModelProperty(value = "订单金额(HKD)")
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "订单编号")
    private String orderNumber;

    @ApiModelProperty(value = "查询编号")
    private String inquiryNumber;

    @ApiModelProperty(value = "付款到期时间(前端根据此时间计算倒计时)", example = "2021-05-12")
    private LocalDateTime payExpireDate;

    @ApiModelProperty(value = "订单状态-详情页前端显示括号中的状态说明(" +
            "1=待付款(待付款)," +
            "2=已付款/待确认(您已下单)," +
            "3=已取消(预订失败)," +
            "4=已取消(超时未支付,已取消)," +
            "5=已完成(已完成)," +
            "6=售后中(待处理)," +
            "7=售后中(待退款)," +
            "8=售后中(已退款)," +
            "9=售后中(待退款))", example = "1")
    private Integer orderStatus;

    @JsonIgnore
    @ApiModelProperty(value = "付款状态(1=待付款,2=已付款,3=已取消)", example = "1", hidden = true)
    private Integer paymentStatus;

    @JsonIgnore
    @ApiModelProperty(value = "预订状态(1=待確認,2=確認預訂,3=確認取消)", example = "1", hidden = true)
    private Integer scheduledStatus;

    @JsonIgnore
    @ApiModelProperty(value = "取消状态(2=审批中,3=审批通过,4=审批不通过)", example = "1", hidden = true)
    private Integer cancelStatus;

    @ApiModelProperty(value = "预订须知", example = "这就是预订须知")
    private String customerNotice;

    @ApiModelProperty(value = "支付方式", example = "支付宝")
    private String payment;


    /**
     * 酒店信息 start
     */
    @ApiModelProperty(value = "酒店id")
    private Long hotelId;

    @ApiModelProperty(value = "酒店名称", example = "jb大酒店")
    private String name;

    @ApiModelProperty(value = "英文名称")
    private String enName;

    @ApiModelProperty(value = "联系电话")
    private String telephone;

    @ApiModelProperty(value = "酒店星级", example = "5")
    private Integer starLevel;

    @ApiModelProperty(value = "酒店星级说明", example = "五星級/豪華型")
    private String starLevelExplain;

    @ApiModelProperty(value = "详细地址", example = "宝安区宝安大道5010号（地铁1号线后瑞地铁站A出口）")
    private String location;

    @ApiModelProperty(value = "酒店经度")
    private String lon;

    @ApiModelProperty(value = "酒店纬度")
    private String lat;
    /**
     * 酒店信息 end
     */

    /**
     * 房间信息 start
     */
    @ApiModelProperty(value = "酒店产品id")
    private Long productId;

    @ApiModelProperty(value = "入住日期", example = "2021-05-01")
    private LocalDate checkInDate;

    @ApiModelProperty(value = "入住日期说明", example = "周一")
    private String checkInWeek;

    @ApiModelProperty(value = "离店日期", example = "2021-05-03")
    private LocalDate checkOutDate;

    @ApiModelProperty(value = "离店日期说明", example = "周二")
    private String checkOutWeek;

    @ApiModelProperty(value = "晚数", example = "3")
    private Integer nights;

    @ApiModelProperty(value = "房间名称", example = "特价大床房")
    private String roomName;

    @ApiModelProperty(value = "间房（房间数量）", example = "3")
    private Integer roomNumber;

    @ApiModelProperty(value = "床型", example = "120*200cm大床")
    private String bedType;

    @ApiModelProperty(value = "是否含早", example = "含早餐")
    private String hasBreakfast;
    /**
     * 酒店信息 end
     */

    /**
     * 房间信息 start
     */
    @ApiModelProperty(value = "入住人数组", example = "['周 杰伦','吴 彦祖','梁 朝伟']")
    private List<String> customers;

    @ApiModelProperty(value = "联系人信息")
    private HotelOrderContactPersonInfoDTO contactPersons;
    /**
     * 房间信息 end
     */

    @ApiModelProperty(value = "备注", example = "我要按摩服务")
    private String remark;
    @ApiModelProperty(value = "收据抬头", example = "周杰伦")
    private String receipt;
    @ApiModelProperty(value = "预订日期", example = "2021-06-03")
    private LocalDate bookingDate;

}
